import { Vec3 } from 'cc';
import { AIController } from '../AIController';

/**
 * AI状态基类
 * 
 * 功能：
 * 1. 定义AI状态的基本行为
 * 2. 管理状态的进入和退出
 * 3. 处理状态更新逻辑
 * 4. 提供状态转换接口
 * 
 * 特点：
 * 1. 清晰的状态生命周期
 * 2. 灵活的状态转换
 * 3. 可复用的通用行为
 * 4. 支持状态嵌套
 */
export abstract class BaseState {
    protected controller: AIController;

    constructor(controller: AIController) {
        this.controller = controller;
    }

    public abstract enter(): void;
    public abstract exit(): void;
    public abstract update(dt: number): void;

    protected getRandomPosition(range: number): Vec3 {
        const randomAngle = Math.random() * Math.PI * 2;
        const randomRadius = Math.random() * range;
        const x = Math.cos(randomAngle) * randomRadius;
        const z = Math.sin(randomAngle) * randomRadius;
        return new Vec3(x, 0, z);
    }
} 